home *** CD-ROM | disk | FTP | other *** search
- #ifndef __NDBM_H__
- #define __NDBM_H__
- #ident "$Revision: 1.7 $"
- /*
- *
- * Copyright 1992, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved. The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
- *
- * @(#)ndbm.h 5.1 (Berkeley) 5/30/85
- */
-
- /*
- * Hashed key data base library.
- */
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #define PBLKSIZ 1024
- #define DBLKSIZ 4096
-
- typedef struct {
- int dbm_dirf; /* open directory file */
- int dbm_pagf; /* open page file */
- int dbm_flags; /* flags, see below */
- long dbm_maxbno; /* last ``bit'' in dir file */
- long dbm_bitno; /* current bit number */
- long dbm_hmask; /* hash mask */
- long dbm_blkptr; /* current block for dbm_nextkey */
- int dbm_keyptr; /* current key for dbm_nextkey */
- long dbm_blkno; /* current page to read/write */
- long dbm_pagbno; /* current page in pagbuf */
- char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
- long dbm_dirbno; /* current block in dirbuf */
- char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
- } DBM;
-
- #if (defined(_SGI_SOURCE) && !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE) && !defined(_ABI_SOURCE))
-
- typedef struct {
- int dbm_dirf; /* open directory file */
- int dbm_pagf; /* open page file */
- int dbm_flags; /* flags, see below */
- /* LINTED long long */
- long long dbm_maxbno; /* last ``bit'' in dir file */
- /* LINTED long long */
- long long dbm_bitno; /* current bit number */
- /* LINTED long long */
- long long dbm_hmask; /* hash mask */
- /* LINTED long long */
- long long dbm_blkptr; /* current block for dbm_nextkey */
- int dbm_keyptr; /* current key for dbm_nextkey */
- /* LINTED long long */
- long long dbm_blkno; /* current page to read/write */
- /* LINTED long long */
- long long dbm_pagbno; /* current page in pagbuf */
- char dbm_pagbuf[PBLKSIZ]; /* page file block buffer */
- /* LINTED long long */
- long long dbm_dirbno; /* current block in dirbuf */
- char dbm_dirbuf[DBLKSIZ]; /* directory file block buffer */
- } DBM64;
- #endif
-
- #define _DBM_RDONLY 0x1 /* data base open read-only */
- #define _DBM_IOERR 0x2 /* data base I/O error */
-
- #define dbm_rdonly(db) ((db)->dbm_flags & _DBM_RDONLY)
-
- #define dbm_error(db) ((db)->dbm_flags & _DBM_IOERR)
- /* use this one at your own risk! */
- #define dbm_clearerr(db) ((db)->dbm_flags &= ~_DBM_IOERR)
- #if (defined(_SGI_SOURCE) && !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE) && !defined(_ABI_SOURCE))
-
- #define dbm_error64(db) ((db)->dbm_flags & _DBM_IOERR)
- /* use this one at your own risk! */
- #define dbm_clearerr64(db) ((db)->dbm_flags &= ~_DBM_IOERR)
- #endif
-
- /* for flock(2) and fstat(2) */
- #define dbm_dirfno(db) ((db)->dbm_dirf)
- #define dbm_pagfno(db) ((db)->dbm_pagf)
-
- typedef struct {
- char *dptr;
- int dsize;
- } datum;
-
- /*
- * flags to dbm_store()
- */
- #define DBM_INSERT 0
- #define DBM_REPLACE 1
-
- DBM *dbm_open(const char *, int, int);
- void dbm_close(DBM *);
- datum dbm_fetch(DBM *, datum);
- datum dbm_firstkey(DBM *);
- datum dbm_nextkey(DBM *);
- long dbm_forder(DBM *, datum);
- int dbm_delete(DBM *, datum);
- int dbm_store(DBM *, datum, datum, int);
- #if (defined(_SGI_SOURCE) && !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE) && !defined(_ABI_SOURCE))
-
- DBM64 *dbm_open64(const char *, int, int);
- void dbm_close64(DBM64 *);
- datum dbm_fetch64(DBM64 *, datum);
- datum dbm_firstkey64(DBM64 *);
- datum dbm_nextkey64(DBM64 *);
- /* LINTED long long */
- long long dbm_forder64(DBM64 *, datum);
- int dbm_delete64(DBM64 *, datum);
- int dbm_store64(DBM64 *, datum, datum, int);
- #endif
-
- #ifdef __cplusplus
- }
- #endif
- #endif /* !__NDBM_H__ */
-